1. Field of the Invention
The present invention relates generally to user interfaces, and more particularly to automatically and dynamically adjusting characteristics of a user interface in response to a user's proficiency.
2. Description of the Related Art
User interfaces for computer systems have become increasingly sophisticated over the years. As software developers have added more and more features to operating systems and software applications, they have struggled to provide easy-to-use mechanisms for accessing and using these features. Some features are of value to experienced users but are rarely needed by novices. The increased complexity these features add to a user interface can be a significant burden to novice users, as it can make it more difficult for such users to find the commands they are looking for when the commands are buried within complex menus containing esoteric commands.
In addition, some operations are simple when a number of default assumptions are made as to various options, but are more complex if the user needs to specify these assumptions. A novice user would rather have the software assume the default answers to the various options, while a more experienced user would prefer to have greater control over the operation by being given the opportunity to manually specify many of the options. For example, when copying files to a CD, a novice user may want the computer to simply assume standard default configuration options, while an experienced user would generally want to have more control over the copying operation.
Some operating systems and applications provide configuration options that allow a user to specify a user interface level, such as a “beginner” or “advanced.” If the user selects the beginner level, he or she is presented with simplified menus and command structures, which are generally a subset of those provided at the advanced level. Other user interfaces provide techniques for customizing the menus and commands by selecting from a list of commands; selected commands are included, while other commands are omitted. One limitation of such approaches is that the user must select and/or customize the user interface level him- or herself; many users, particularly novice users, do not know how to make such adjustments, or simply do not bother to make them.
In addition, such solutions do not allow for the fact that a user may become more proficient with time, and therefore may be ready to move to a more advanced level. Instead of providing a dynamic user mode, such solutions are essentially static, and require the user to take affirmative steps in order to change the user mode to accommodate a higher proficiency level. Again, many users simply do not bother to make such changes.
Other limitations of existing configuration schemes are:                users often overestimate their capabilities;        users may find it annoying to be queried as to their capabilities; and        a perceived stigma associated with selecting a “beginner” level may cause users to inappropriately select “advanced” level.        
As a result, such user interfaces are often misconfigured for the particular user. Novice users may end up with an interface that is too confusing and complex for their needs, and experienced users may become frustrated when needed commands are unavailable or difficult to access. In addition, by failing to adapt to users' changing needs and proficiency levels, existing solutions do not provide users with the ability to become more proficient by learning and discovering new features of the software. A novice user may never become aware of advanced features that are absent from the beginner version of the user interface, and may never even become aware that an advanced version of the user interface exists.
Some user interfaces attempt to adapt to user needs by hiding menu commands that are less frequently used, and/or by changing the order of menu commands according to frequency of use. Such attempts are somewhat dynamic in nature, as they react to monitored user behavior. However, these techniques are based solely on frequency of use of commands, and fail to take into account user proficiency or other factors in deciding which menu items should be hidden or displayed. In addition, the default or initial state of such systems usually displays all menu commands, which can be overwhelming or intimidating for novice users.
What is needed is an automatic, dynamic system and method of adjusting the characteristics of a user interface based on monitored user proficiency. More proficient users could automatically be presented with a more sophisticated user interface with a broader range of commands and options, while novice users could automatically be presented with a simplified interface. What is further needed is a system and method that adapts to changing proficiency level as the user learns more about the software, and that increases the level of complexity of the user interface accordingly. What is further needed is a system and method that does not require any effort on the part of the user to configure the user interface appropriately based on his or her level of proficiency.